1

我正在尝试在表中使用数组,并且仅当数组尚未包含该值时才想将值插入到数组中。我不确定这里的最佳性能方法是什么。

“模型.py”

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

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

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

“意见.py”

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

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

提前致谢!

解决方案:使用 SetField

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

视图.py

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

谢谢大家!

4

2 回答 2

1

粗暴的python方式:

if document.documentID not in visibleDocuments.documents:
    visibleDocuments.documents.append(document.documentID)
于 2013-09-06T20:03:38.403 回答
1

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

于 2013-09-06T20:13:49.340 回答