我有一个具有属性(公司名称......)的客户类,另一个具有客户数据。它是一个文本字段,但不显示为文本字段。我在客户端类中使用 models.foreignkey(outraclasse, on_delete=models.cascade)
调用它。我做错了吗?缺少什么?
编辑: 这些是应用程序的模型和管理员 管理员:
from django.contrib import admin
from tenants.models import client
# register your models here.
class clientadmin(admin.modeladmin):
list_display = [
'company_name',
'company_register_name',
'company_id']
search_fields = [
'company_name',
'company_register_name',
'company_id']
list_per_page = 10
admin.site.register(client,clientadmin)
型号
from django.db import models
from datetime import date
class ClientBasicData(models.Model):
# client_id = models.ForeignKey(Client, on_delete=models.CASCADE)
name_admin_ti = models.CharField(max_length=30,
verbose_name = u'Nome do responsavel TI',
unique=False)
def __str__(self):
return f"{self.name_admin_ti}"
class Client(models.Model):
company_data = models.ForeignKey('ClientBasicData',
on_delete=models.CASCADE,
verbose_name= u'Dados do
cliente',
unique=False)
company_name = models.CharField(max_length=30,
verbose_name = u'Razao social',
unique=False)
company_register_name = models.CharField(max_length=30,
verbose_name = u'Nome da Empresa',
unique=True)
company_id = models.CharField(
max_length=30,
verbose_name = u'CNPJ da empresa',
unique=True)
date_start_company = models.DateField(
verbose_name = u'Data de ingresso de cliente',
unique=False,
default=date.today,
null=True)
def __str__(self):
return f"{self.company_name} - {self.company_register_name} - {self.company_id}"
"""
class ClienteBasicData(models.Model):
client_id = models.ForeignKey(Client, on_delete=models.CASCADE)
name_admin_ti = models.CharField(max_length=30,
verbose_name = u'Nome do responsabel TI',
unique=False)
def __str__(self):
return f"{self.name_admin_ti}"
"""
正确答案
Django Admin 中的默认行为是对另一个模型的引用显示为下拉框。这是有道理的,因为对另一个模型(外键)的引用只是一个值,它表示:“另一个表中的哪一行保存与此记录相关的数据”。
通常没有机会直接编辑其他表(其他模型)中的值。
如果您希望相关模型作为可编辑文本字段显示在 Django 管理中,您应该查看 Django 管理“内联”类。您需要为 ClientBasicData 定义内联,然后从 ClientAdmin 中引用该数据。
注意:您正在尝试做的事情看起来您的模型设计可能存在更根本的问题。您可能需要考虑一下组织这些数据的其他方式(即,真的有理由将“基本数据”放在另一个表中吗?)。