django継承管理サイト - なぜチャーフィールドはツリーを自動的にフォローダウンするのに対して、定義されたクラスはフィールドにないのですか?私は何時間も答えを探していましたが、これは私の最初の質問ですので、優しくしてください。ここdjango継承管理サイト - charfieldsはツリーを自動的にフォローするのに対し、定義されたクラスはフィールドにないのはなぜですか?
は私のmodels.pyは
from django.db import models
import datetime
from django.db.models import EmailField
class XObj(models.Model):
auto_increment_id = models.AutoField(primary_key=True)
creation_date = models.DateTimeField(default=datetime.datetime.now)
def __str__(self):
return str(self.creation_date.datetime)
def date_created(self):
return self.creation_date
def date_last_change(self):
return str(self.auto_increment_id)
class Address(XObj):
# todo: differentiate between US and non US addresses and validate
house = models.CharField(max_length=20, default="")
street = models.CharField(max_length=200, default="")
street2 = models.CharField(max_length=200, default="")
city = models.CharField(max_length=200, default="")
state = models.CharField(max_length=200, default="")
zipcode = models.CharField(max_length=200, default="")
country = models.CharField(max_length=200, default="")
def __str__(self):
return str(self.house, self.street, self.street2, self.city, self.state, self.zipcode, self.country)
class Entity(XObj):
full_name = models.CharField(max_length=200, default="")
# todo: validate email
email = EmailField()
# def _init_(self):
# self.full_name = models.CharField(max_length=200, default="")
#
def __str__(self):
return "Entity"
class Person(Entity):
first_name = models.CharField(max_length=200, default="")
last_name = models.CharField(max_length=200, default="")
address = Address
# def _init_(self):
# self.first_name = models.CharField(max_length=200, default="")
def __str__(self):
return self.full_name
class Vendor(XObj):
name = models.CharField(max_length=200, default="")
address = Address
website = models.URLField
point_of_contact = Person
def __str__(self):
return self.name
class Hotel(Vendor):
def __str__(self):
return self.name
class Restaurant(Vendor):
def __str__(self):
return self.name
class Lounge(Vendor):
def __str__(self):
return self.name
であり、ここで私のadmin.pyである:ここでは
from django.contrib import admin
from .models import Person, Address, Entity, Vendor, Hotel, Restaurant, Lounge
class AddressAdmin(admin.ModelAdmin):
list_display = [field.name for field in Address._meta.fields if field.name !="id"]
# TODO: add implementation for non charfields
admin.site.register(Person)
admin.site.register(Address, AddressAdmin)
admin.site.register(Entity)
admin.site.register(Vendor)
admin.site.register(Hotel)
admin.site.register(Restaurant)
admin.site.register(Lounge)
は人のために私のアドオンである:ここでは
です私の住所:
なぜ人物追加管理ページにアドレスフィールドがないのですか?
スペードのエース、私のしてください:)
「address = Address」と「point_of_contact = Person」とは何を意味していますか?あなたがそれらの行を削除する場合、人adminからのフィールドはまだ失われていますか? – Alasdair