table 不允许在 Django 中创建和编辑

table not allow to create and edit in django

Django table 不允许编辑和创建。

编辑前 table

我改变了 is active true 并带走了用户 illyas

但是在保存后是活动的错误并占用了用户None...为什么???

models.py

class SignupCupon(models.Model):
    offer_for = models.CharField(max_length=20, default="Referral offer")
    cupon_code = models.CharField(max_length=50, unique=True)
    offer_price = models.PositiveIntegerField()
    is_active = models.BooleanField(default=False)
    which_user = models.OneToOneField(User, related_name="which_user_signup", on_delete=models.CASCADE, null=True, blank=True)
    taken_user = models.ForeignKey(User, related_name="signup_cupon_taken_user", on_delete=models.CASCADE, null=True, blank=True)
    create_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return "User: " + str(self.which_user) + " - Cupon: " + str(self.cupon_code)
    
    def save(self, *args, **kwargs):
        if self.cupon_code == "":
            self.cupon_code = generate_cupon()
            super().save(*args, **kwargs)

admin.py

from django.contrib import admin
from .models import CategoryOffer, ProductOffer, CuponOffer, SignupCupon, ReferralCupon


admin.site.register([CategoryOffer, ProductOffer, CuponOffer, SignupCupon, ReferralCupon])

您的 super().save(*args, **kwargs) 仅在 if 语句为真(如果没有 cupon_code)时才会被调用,因此在您的情况下它永远不会被调用。无论 if 语句如何,都尝试调用它:

def save(self, *args, **kwargs):
    if self.cupon_code == "":
        self.cupon_code = generate_cupon()
    super().save(*args, **kwargs)