【发布时间】:2021-02-01 13:14:28
【问题描述】:
这是我的 model.py :
class MireilleUser(models.Model):
created = models.DateTimeField( blank=True, editable=False,default=timezone.now)
modified = models.DateTimeField( blank=True,default=timezone.now)
uuid = models.CharField(blank=True, max_length=48,default='')
firebase_id = models.CharField(max_length=256)
def save(self, *args, **kwargs):
""" On save, update timestamps """
if not self.id:
self.created = timezone.now()
self.modified = timezone.now()
if not self.uuid:
self.uuid = str(uuid.uuid4().hex) + str(random.randint(1000, 9999))
return super(MireilleUser, self).save(*args, **kwargs)
class MireilleAppSubscription(models.Model):
ACTIVE = 'AC'
SOPHOMORE = 'SO'
JUNIOR = 'JR'
SENIOR = 'SR'
GRADUATE = 'GR'
STATUS_VALUE = [
(ACTIVE, 'Active'),
('SO', 'Sophomore'),
('JR', 'Junior'),
('SR', 'Senior'),
('GR', 'Graduate'),
]
STRIPE = 'ST'
GOOGLE = 'GO'
APPLE = 'AP'
PLATFORM_VALUE = [
(STRIPE, 'STRIPE'),
(GOOGLE, 'GOOGLE'),
(APPLE, 'APPLE'),
]
created = models.DateTimeField( blank=True, editable=False,default=timezone.now)
modified = models.DateTimeField( blank=True,default=timezone.now)
uuid = models.CharField(blank=True, max_length=48,default='')
mireille_user = models.ForeignKey(MireilleUser,on_delete=models.PROTECT)
date_begin = models.DateTimeField(blank=True, editable=True, default=timezone.now)
stripe_client_id = models.CharField(blank=True, max_length=48,default='')
platform = models.CharField(blank=True, max_length=2,choices=PLATFORM_VALUE)
expected_end_time = models.DateTimeField(blank=True, editable=True, default=(timezone.now()+timezone.timedelta(days=8)))
is_free = models.BooleanField(default=False)
is_vip = models.BooleanField(default=False)
promo_code = models.CharField(blank=True, max_length=128, default='')
status = models.CharField(max_length=2,
choices=STATUS_VALUE,
default=ACTIVE)
def save(self, *args, **kwargs):
""" On save, update timestamps """
if not self.id:
self.created = timezone.now()
self.modified = timezone.now()
if not self.uuid:
self.uuid = str(uuid.uuid4().hex) + str(random.randint(1000, 9999))
return super(MireilleAppSubscription, self).save(*args, **kwargs)
这是我的 admin.py :
class MireilleUser_Admin(admin.ModelAdmin):
list_display = [field.name for field in MireilleUser._meta.get_fields()]
search_fields = [field.name for field in MireilleUser._meta.get_fields()]
actions = [
export_as_csv_action(
"CSV Export",
fields=[field.name for field in MireilleUser._meta.get_fields()],
)
]
class MireilleAppSubscription_Admin(admin.ModelAdmin):
list_display = [field.name for field in MireilleAppSubscription._meta.get_fields()]
search_fields = [field.name for field in MireilleAppSubscription._meta.get_fields()]
actions = [
export_as_csv_action(
"CSV Export",
fields=[field.name for field in MireilleAppSubscription._meta.get_fields()],
)
admin.site.register(MireilleUser, MireilleUser_Admin)
admin.site.register(MireilleAppSubscription, MireilleAppSubscription_Admin)
但在管理员中,当我点击我拥有的管理员上的 Mireille 用户时:
AttributeError at /admin/AppUser/mireilleuser/
Unable to lookup 'mireilleappsubscription' on MireilleUser or MireilleUser_Admin
我不明白为什么,因为外键在 MireilleAppSubscription 到 MireilleUser 而不是 MireilleUser 到 MireilleAppSubscription
我怀疑我使用元字段生成管理员的方式有什么问题。
问候
【问题讨论】: