Django管理面板中的一对多问题

-2 投票
1 回答
1797 浏览
提问于 2025-04-15 13:14

你好,我有这两个模型:

from django.db import models

class Office(models.Model):
    name = models.CharField(max_length=30)
    person = models.CharField(max_length=30)
    phone = models.CharField(max_length=20)
    fax = models.CharField(max_length=20)
    address = models.CharField(max_length=100)
    def __unicode__(self):
            return self.name



class Province(models.Model):
    numberPlate = models.IntegerField(primary_key=True)
        name = models.CharField(max_length=20)
    content = models.TextField()
    office = models.ForeignKey(Office)
    def __unicode__(self):
            return self.name

我想为省份选择多个办公室,因为这是一个一对多的模型。以下是我的admin.py:

from harita.haritaapp.models import Province, Office
from django.contrib import admin


class ProvinceCreator(admin.ModelAdmin):
        list_display = ['name', 'numberPlate','content','office']

class OfficeCreator(admin.ModelAdmin):
        list_display = ['name','person','phone','fax','address']


admin.site.register(Province, ProvinceCreator)
admin.site.register(Office, OfficeCreator)

现在,在管理面板上创建新省份时,我只能为每个省份选择一个办公室,但我想能够选择多个。请问我该怎么做呢?

谢谢!

1 个回答

2

我不太确定我是否理解错了你的意思,但你现在的模型说“一个办公室可以关联多个省份,但每个省份只能有一个办公室”。这和你想要的结果是矛盾的。你应该使用一个多对多的字段来解决这个问题:

class Province(models.Model):
    numberPlate = models.IntegerField(primary_key=True)
    name = models.CharField(max_length=20)
    content = models.TextField()
    office = models.ManyToManyField(Office)
    def __unicode__(self):
        return self.name

撰写回答