Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Django中管理多对一关系_Python_Django_Django Models_Django Admin - Fatal编程技术网

Python 如何在Django中管理多对一关系

Python 如何在Django中管理多对一关系,python,django,django-models,django-admin,Python,Django,Django Models,Django Admin,我试图建立一个多对一的关系,并希望能够控制它(添加-删除等)通过管理面板。这是我的model.py: from django.db import models class Office(models.Model): name = models.CharField(max_length=30) class Province(models.Model): numberPlate = models.IntegerField(primary_key=True) name =

我试图建立一个多对一的关系,并希望能够控制它(添加-删除等)通过管理面板。这是我的model.py:

from django.db import models

class Office(models.Model):
    name = models.CharField(max_length=30)


class Province(models.Model):
    numberPlate = models.IntegerField(primary_key=True)
    name = models.CharField(max_length=20)
    office = models.ForeignKey(Office)
我希望我的模型允许一个省有几个办事处

因此,在我的admin.py中:

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

class OfficeCreator(admin.ModelAdmin):
        list_display = ['name']
这对我来说似乎是正确的,但是当我尝试使用管理面板添加一个新的省时,我得到以下结果:

TemplateSyntaxError at /admin/haritaapp/province/

Caught an exception while rendering: no such column: haritaapp_province.office_id

谢谢

你看过做内联的文档了吗

在你的admin.py中

class Office(admin.TabularInline):
    model = Office

class ProvinceAdmin(admin.ModelAdmin):
    inlines = [
        Office,
    ]

这意味着您必须向后设置模型。如果希望省有多个办公室,则省应该是办公室模型中的外键

from django.db import models

class Province(models.Model):
    numberPlate = models.IntegerField(primary_key=True)
    name = models.CharField(max_length=20)

class Office(models.Model):
    name = models.CharField(max_length=30)
    province = models.ForeignKey(Province)
这将是实现一对多关系的简单而直观的方法

至于您得到的错误“没有这样的列:haritaapp_province.office_id”,当您向模型中添加新属性(在您的案例办公室中)时,您应该手动将列添加到表中。或者删除该表并重新运行syncdb:

 python manage.py syncdb

Django在向模型添加新字段时不会自动向表中添加新列。

最后,我可以让它正常工作,即使“python manage.py syncdb”也不够,所以我不得不删除sqlite3数据库并重新生成:)一个小问题tho,在选择/添加时,外来项显示为Province_对象。如何修复它以使其显示名称?Regardsoh self-edit:def _unicode _;(self):return self.name为我做了这项工作:pin ref到“Django不会自动添加新列”-Django south在自动管理模型更改方面做得很好,尽管我希望迁移命名方案对多个开发人员更友好。