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 モデルフォームは 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

service2 module7 数量 2

ここで、サービス用に選択されたモジュールの追加属性の数量を追加します

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 に答える