0

我有 3 个模型:

class POHeader(models.Model):
   number = models.CharField(max_length="5", unique=True)

class Modules(models.Model):
   # this has M:M relationship with the Service model
   name =  models.CharField(max_length="5", unique=True)

class Service(models.Model):
   #id is the key field which is auto generated 
   # apart from other attributes ..
   poheader = models.ForeignKey(POHeader)
   modules = models.ManyToManyField(Module)

Service modelform 内联到 POHeader。此外,这些模块还有 admin.py 中使用的多项选择:

class ServiceForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(ServiceForm, self).__init__(*args, **kwargs)

    modules = forms.ModelMultipleChoiceField(
        queryset=Module.objects.all(),
        required=False,
        widget=forms.CheckboxSelectMultiple())

    class Meta:
        """                                                                                                                                                                      
        Service Model                                                                                                                                                            
        """
        model = Service

现在的问题是,对于为每个服务选择的每个模块,我想为该模块添加其他详细信息。如何实现?这些属性是否需要添加到服务模型中?这怎么可能实现。例如对于一个 poheader 1 条目:

服务 1 模块 1 数量 25 模块 2 数量 27

服务 2 模块 7 数量 2

这里我想为为服务选择的模块添加附加属性数量 qty

请记住,我们正在使用 Service as admin.TabularInline 执行 POHeader 条目。

4

2 回答 2

0

注意这之间的区别

modules = models.ManyToManyField(modules)

和这个

modules = models.ManyToManyField(Modules)

另外,根据1.2 docs,您应该通过

modules = models.ManyToManyField(Module, through=ServiceModule)

这个公认的问题也可能有帮助

于 2012-06-30T15:15:25.380 回答
0

如果我正确理解了这个问题,您需要为多对多关系创建一个模型。

class ServiceModule(models.Model):
    service = models.ForeignKey(Service)
    module = models.ForeignKey(Module)
    quantity = models.PositiveIntegerField(default=0)

然后在多对多关系上指定它。

class Service(models.Model):
   poheader = models.ForeignKey(POHeader)
   modules = models.ManyToManyField(Module, through=ServiceModule)

https://docs.djangoproject.com/en/1.2/topics/db/models/#extra-fields-on-many-to-many-relationships

于 2012-06-27T20:55:47.683 回答