django模拟了多对多关系问题

时间:2013-12-04 13:43:58

标签: django models

Django 1.3。

假设我有模特:

class Inspector(models.Model):
    field = models.IntegerField()

Model_1(models.Model):
    inspectors = ManyToManyField(InspectorData)

我必须创建另一个模型,其中字段只能存储来自Model_1().inspectors属性的数据。 Smth喜欢:

class Model_2(models.Model):
    model_1_inspectors = ManyToManyField(Model_1__inspectors)

如何在Django中完成此操作(如果可能的话)?

提前致谢。

2 个答案:

答案 0 :(得分:1)

第一个选项是覆盖save中的Model_1方法以及特殊创建的模型Model1inspectors中的每个保存操作更新检查员。这样,“Model_2”看起来就像你的问题。

但我认为最好为表单中的ManyToManyField自定义查询集,如下所示:

class Model_2Form(forms.ModelForm):
    class Meta:
        model = Model_2

    def __init__(self, *args, **kwargs):
        super(Model_2Form, self).__init__(*args, **kwargs)
        self.fields['model_1_inspectors'].queryset = InspectorData.objects.filter(
            pk__in=Model_1.objects.values('inspectors').distinct())

答案 1 :(得分:0)

导入所需的模型

from myapp_folder.models import Inspector
class Model_2(models.Model):
    model_1_inspectors = ManyToManyField(Inspector)

这将有效