【问题标题】:Create instance of foreign key object every time parent object is created每次创建父对象时创建外键对象的实例
【发布时间】:2019-07-28 21:29:14
【问题描述】:

我想在我的数据库中创建一个链接到 User 模型的 Cart 对象。每次创建用户时,我都希望创建一个链接的购物车(在数据库中)。 有什么建议?我尝试将其链接到用户 ID,但没有任何乐趣。

models.py

from django.db import models
from django.contrib.auth.models import User
from django.dispatch import receiver
from django.db.models.signals import post_save

# Create your models here.


class Product(models.Model):
    name = models.CharField(max_length=50)
    desc = models.CharField(max_length=50)
    img = models.FileField()
    created = models.DateField()
    num_stars = models.IntegerField()


class Cart(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE,to_field='id', null=True)
    content = models.CharField(max_length=50)
    last_update = models.DateTimeField()

【问题讨论】:

    标签: python mysql django django-models foreign-keys


    【解决方案1】:

    只需在创建用户时让接收者处理购物车的创建

    from django.dispatch import receiver
    from django.db.models.signals import post_save
    from django.contrib.auth.models import User
    from django.utils import timezone
    class Cart(models.Model):
        user = models.ForeignKey(User, on_delete=models.CASCADE,to_field='id', null=True)
        content = models.CharField(max_length=50,null=True,blank=True)
        last_update = models.DateTimeField(default=timezone.now)
    @receiver(post_save, sender=User)
    def create_user_cart(sender, instance, created, **kwargs):
        if created:
            Cart.objects.get_or_create(user=instance)
    

    【讨论】:

    • 我是否将此功能放入我的购物车模型中?
    • ValueError: 数据库后端不接受 0 作为 AutoField 的值。
    • 您需要添加内容和last_update,因为它们不是空字段
    • 或者只为 content 和 last_update 设置 null=True
    • 如果问题仍然存在,请在此处帮助聊天
    猜你喜欢
    • 2019-01-17
    • 1970-01-01
    • 2014-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-22
    • 1970-01-01
    • 2020-01-30
    相关资源
    最近更新 更多