方式,允许在Python/Django的重复多到许多条目
问题描述:
我有以下的Django模型:方式,允许在Python/Django的重复多到许多条目
class Icon(models.Model):
name = models.CharField(max_length=200,null=False,blank=False)
class Post(models.Model):
icons = models.ManyToManyField(Icon)
当我写了下面的代码:
post = Post()
icons = []
icon_id = form.cleaned_data['icon_1']
if (icon_id):
i = Icon.objects.get(id=icon_id)
icons.append(i)
icon_id = form.cleaned_data['icon_2']
if (icon_id):
i = Icon.objects.get(id=icon_id)
icons.append(i)
post.icons = icons
post.save()
它工作正常的大部分是创建一个Post对象和两个Icon对象。
但是,如果在两种情况下icon_id都是1,它只会在数据库中创建一个条目,而不是两个。
所以它看起来像检查重复和删除它们。
如何使这项工作,所以我允许重复? (我想要两个与某个帖子相关的SAME图标。)
谢谢!
答
定义自己的模型,能有这样非唯一许多一对多关系
class PostIcon(models.Model):
post = models.ForeignKey(Post)
icon = models.ForeignKey(Icon)
,比加逐一
for icon in icons:
PostIcon(post=post, icon=icon).save()
或传输模式为through
参数ManyToManyField
例如
class Post(models.Model):
icons = models.ManyToManyField(Icon, through=PostIcon)
或者您可以与PostIcon
代替具有多行相关联的计数,如果例如提供用例您可能需要显示徽章10次
class PostIcon(models.Model):
post = models.ForeignKey(Post)
icon = models.ForeignKey(Icon)
count = models.IntegerField()
我不明白。你为什么附加两个具有相同ID的图标? – milkypostman