1

私は2つのモデルで構成される記録管理システムを持っています。1つのモデルは保持ページを作成し、もう1つのモデルは個別のエントリを作成します...

class RecordEntry(models.Model):
    client = models.CharField(max_length=50, choices=CLIENT_CHOICES)
    job_number = models.CharField(max_length=30, unique=False, blank=False, null=False)
    cell_number = models.CharField(max_length=4, unique=False, blank=True, null=True)
    entry_title = models.CharField(max_length=64, unique=False, blank=True, null=True)
    date = models.DateField(("Date"), default=datetime.date.today)
    attachment = models.FileField(upload_to=content_file_name, blank=True, null=True)
    ...     

class RecordPage(models.Model):
    client = models.CharField(max_length=50, choices=CLIENT_CHOICES)
    job_number = models.CharField(max_length=30, unique=True, blank=False, null=False)
    job_name = models.CharField(max_length=64, unique=False, blank=False, null=False)
    create_date = models.DateField(("Date"), default=datetime.date.today)
    contact = models.ForeignKey(UserProfile)
    entry = models.ForeignKey(RecordEntry, blank=True, null=True)
    ...

…ページが#211211で、個々のエントリが#211211-01、#211211-02、#211211-03の場合

簡単にするために、adminでレンダリングされたフォームを使用してページを作成しています。管理者が「プラス」アイコンを表示して、その場でエントリを作成および追加できるので便利です。私の問題は、必要な数の「エントリ」をページに追加できるようにしたいということです。つまり、フォームに複数の「エントリ」フィールドを取得するには、次のようにすることができます。

class RecordPage(models.Model):
    client = models.CharField(max_length=50, choices=CLIENT_CHOICES)
    job_number = models.CharField(max_length=30, unique=True, blank=False, null=False)
    job_name = models.CharField(max_length=64, unique=False, blank=False, null=False)
    create_date = models.DateField(("Date"), default=datetime.date.today)
    contact = models.ForeignKey(UserProfile)
    entry = models.ForeignKey(RecordEntry, blank=True, null=True)
    entry2 = models.ForeignKey(RecordEntry, related_name='+', blank=True, null=True)
    entry3 = models.ForeignKey(RecordEntry, related_name='+', blank=True, null=True)
    entry4 = models.ForeignKey(RecordEntry, related_name='+', blank=True, null=True)
    entry5 = models.ForeignKey(RecordEntry, related_name='+', blank=True, null=True)
    entry6 = models.ForeignKey(RecordEntry, related_name='+', blank=True, null=True)
    entry7 = models.ForeignKey(RecordEntry, related_name='+', blank=True, null=True)
    and so on…

しかし、もっと良い方法が必要ですよね?

4

1 に答える 1

0

ここでManyToManyFieldを使用しない理由

entry = models.ManyToManyField('RecordEntry', related_name='pages')

また、Django管理者は、新しい行を追加する機能を自動的に提供します。

于 2012-07-22T13:24:39.677 に答える