位置应用程序模型:
class States(models.Model):
state_name = models.CharField(max_length=200, unique=True)
update_time = models.DateTimeField(auto_now=True, auto_now_add=False)
create_time = models.DateTimeField(auto_now=False, auto_now_add=True)
def __str__(self):
return self.state_name
class Districts(models.Model):
state = models.ForeignKey(States, on_delete=models.CASCADE)
dis_name = models.CharField(max_length=200, unique=True)
update_time = models.DateTimeField(auto_now=True, auto_now_add=False)
create_time = models.DateTimeField(auto_now=False, auto_now_add=True)
def __str__(self):
return self.dis_name
class Places(models.Model):
district = models.ForeignKey(Districts, on_delete=models.CASCADE)
place_name = models.CharField(max_length=200, unique=True,)
pin_no = models.IntegerField(null=True)
update_time = models.DateTimeField(auto_now=True, auto_now_add=False)
create_time = models.DateTimeField(auto_now=False, auto_now_add=True)
def __str__(self):
return self.place_name
假设,我想映射一些带有区名称的信息。但是在管理面板中,它显示了所有地区名称。(但冲突是两个州的区域名称)
我想用这种方式:工作应用模型:
from location.models import States, Districts, Places
class Info(models.Model):
dis_name = models.ForeignKey(Districts, on_delete=models.CASCADE)
info_name = models.CharField(max_length=500)
sort_name = models.CharField(max_length=50)
在admin.py
中class InfoAdmin(admin.ModelAdmin):
list_display = ("dis_name", "info_name", "sort_name")
ordering = ('id',)
但是在管理面板中显示了所有地区名称。
所以我该怎么办。为了避免冲突。另外,如果我使用自己的ID,则消除了冲突。但是在管理面板中,它仅显示所有地区的所有ID字段。这不是人类可读。
示例:
我想要的,假设有2个州的地区名称说德里州和加尔各答的地区名称相同。然后在管理面板2中显示大吉岭。那我怎么能确定哪个地区来了?
您使 dis_name 在 district> district 类中唯一。这将使您无法拥有一个以上同名的一个地区,即使它们在不同的州。
在 plot_name 中也是如此
尝试:
class Districts(models.Model):
state = models.ForeignKey(States, on_delete=models.CASCADE)
dis_name = models.CharField(max_length=200, unique=False)
update_time = models.DateTimeField(auto_now=True, auto_now_add=False)
create_time = models.DateTimeField(auto_now=False, auto_now_add=True)
def __str__(self):
return self.dis_name +' - '+ self.state.state_name
class Places(models.Model):
district = models.ForeignKey(Districts, on_delete=models.CASCADE)
place_name = models.CharField(max_length=200, unique=False)
pin_no = models.IntegerField(null=True)
update_time = models.DateTimeField(auto_now=True, auto_now_add=False)
create_time = models.DateTimeField(auto_now=False, auto_now_add=True)
def __str__(self):
return self.place_name + ' - ' + self.district.dis_name
更新:现在将在Admin面板中显示带有区名称的相应状态名称,带有位置名称