我有一个问题。 我需要向 Django 管理面板添加第二个功能:
模型.py
class City(models.Model):
name = models.CharField('Город', max_length=50, unique=True)
slug = models.SlugField(max_length=50, unique=False, blank=True, null=True)
city_latt = models.CharField('Широта', max_length=50, blank=True, null=True)
city_long = models.CharField('Долгота', max_length=50, blank=True, null=True)
country = models.CharField('ISO код страны', max_length=5)
class Meta:
verbose_name = 'Город'
verbose_name_plural = 'Города'
def __str__(self):
return self.name
class Canton(models.Model):
""" Canton list """
canton_name = models.CharField('Название', max_length=255, blank=False)
canton_city = models.ManyToManyField(City, verbose_name='Города', blank=False)
canton_code_for_map = models.CharField('Код для карты', max_length=20, null=True, blank=True, default=None)
canton_shortify = models.CharField('ISO обозначение', max_length=3, null=True, blank=True)
country = models.CharField('ISO код страны', max_length=5)
slug = models.SlugField('url', max_length=255, unique=True, blank=True)
def __str__(self):
return self.canton_name
def get_cities(self):
return ", ".join([c.name for c in self.canton_city.all()])
get_cities.short_description = "Города"
get_cities.admin_order_field = 'canton_city'
class Meta:
verbose_name = 'Территориальные еденицы'
verbose_name_plural = 'Территориальные еденицы'
那么我如何在管理员中创建自定义表单,在其中上传文件并将特定区域分配给上传的城市?
现在我的区域管理员如下所示: admin.py
class CantonForm(forms.ModelForm):
canton_city = forms.ModelMultipleChoiceField(queryset=City.objects.order_by('name'), label='Города')
class Meta:
model = City
fields = '__all__'
class CantonAdmin(admin.ModelAdmin):
# class CantonAdmin(ImportMixin, admin.ModelAdmin):
list_display = ('__str__', 'canton_name', 'canton_code_for_map', 'canton_shortify', 'slug', 'get_cities', 'country')
list_filter = ('canton_name', 'country')
search_fields = ['canton_name__icontains', 'canton_shortify__icontains', 'canton_city__name__icontains', 'country']
form = CantonForm
ordering = ['canton_name']
admin.site.register(Canton, CantonAdmin)
准确理解你的意思并不容易。你能提供更多细节吗?图表或带注释的屏幕截图会有所帮助。
如果您想在导入屏幕中有一个额外的表单字段,您可以在其中将 same 区域分配给上传中的每个城市,那么这是可能的,docs 有一个您可以复制的示例。
但是,如果你想在界面中能够修改每个城市,那就麻烦了很多。