【问题标题】:Two model. Selection list. Not unique两种型号。选择列表。不是独一无二的
【发布时间】:2014-06-25 19:00:27
【问题描述】:

我有两个模型。我希望第一个模型字段是第二个模型字段的选择列表。但是二级模型的领域并不是唯一的。

想一想,需要重新定义管理表单中的字段

请帮助我实现这一点。我是学django的。

国家模型.py

from django.db import models
from django.contrib.auth.models import User

class Country(models.Model):
    class Meta():
        db_table = 'country'

    country_region = models.CharField(max_length=300)
    country_city = models.CharField(max_length=300)
    country_district = models.CharField(max_length=300, blank=True, null=True)

客户端模型.py

from django.db import models
from django.contrib.auth.models import User
from client.models import Client

# Create your models here.
class Client(models.Model):
    class Meta():
        db_table = 'client'

    client_name = models.CharField(max_length=300)
    client_region = models.CharField(max_length=300) #maybe ForeignKey

我想在 admin 中的 client_region(来自国家/地区)中选择列表(选项)

我正在 admin.py 中尝试

from django.contrib import admin
from country.models import Country
from client.models import Client

class ClientAdmin(admin.ModelAdmin):

    def __init__(self, *args, **kwargs):
            new_choices = Country.objects.values('country_region').distinct()
            super(ClientAdmin.form, self).__init__(*args, **kwargs)
            self.field['client_region'].choices = new_choices

# Register your models here.
admin.site.register(Client, ClientAdmin)

我尝试了这段代码,但它不起作用

admin.py

from django.contrib import admin
from timetable.models import Client
from house.models import Country
from django.forms import ModelChoiceField, ModelForm, forms

class ClientForm(ModelForm):
    class Meta:
        model = Client

    def __init__(self, *args, **kwargs):
        super(ClientForm, self).__init__(*args, **kwargs)
        self.field['client_region'] = forms.ModelChoiceField(queryset=Country.objects.values['county_region'])

class ClientAdmin(admin.ModelAdmin):
    list_display = ['client_region']
    form = ClientForm

# Register your models here.
admin.site.register(Client, ClientAdmin)

【问题讨论】:

    标签: python django


    【解决方案1】:

    对于您想要做的事情(如果我理解,请按区域获取客户列表),我将采用的方式是创建第三个模型“区域”,并将客户和国家/地区链接到此模型外键。

    不过,我不确定是否能很好地理解您的问题,您可以尝试重新表述它吗?

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-23
    • 1970-01-01
    • 2014-05-23
    • 1970-01-01
    • 2011-02-03
    • 1970-01-01
    • 1970-01-01
    • 2015-09-28
    相关资源
    最近更新 更多