仅在django中向表数组添加唯一值

时间:2013-09-06 20:00:17

标签: python django pymongo

我正在尝试在表中使用数组,并且只有在数组不包含该值时才想将值插入到数组中。我不确定这里最好的表现方法是什么。

“models.py”

class Documents(models.Model):
documentID = models.AutoField(primary_key=True)

class VisibleDocuments(models.Model):
    visibleTo = models.ForeignKey(UserProfile, null=True)
    documents = ListField()

当我向visibleDocuments添加文档时,我会执行以下操作:

“views.py”

visibleDocuments.documents.append(document.documentID)
visibleDocuments.save()

但是,这种方法的问题在于它会导致列表中出现重复的documentID。我想只有唯一的文档ID。我想知道在Django中最好的方法是什么?我可以使用集合,或者我应该使用某种排序读取访问权限吗?

提前致谢!

解决方案:使用SetField

class VisibleDocuments(models.Model):
    visibleTo = models.ForeignKey(UserProfile, null=True)
    documents = SetField()

views.py

visibleDocuments.documents.add(document.documentID)
visibleDocuments.save()

感谢大家!

2 个答案:

答案 0 :(得分:1)

粗俗的python方式:

if document.documentID not in visibleDocuments.documents:
    visibleDocuments.documents.append(document.documentID)

答案 1 :(得分:1)

如果该ListField是djangotoolbox的ListField,则应考虑使用SetField。