如何在Django中链接两个表? [英] How to link two tables in django?

查看:52
本文介绍了如何在Django中链接两个表?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在Django中使用内置的 User 模型,但是我想使用一些自定义字段,所以我正在创建新模型

  class Profile(models.Model):用户=模型.OneToOneField(用户)profile_img = models.ImageField(null =真)def __str __():返回self.user.username 

这是我的自定义模型.但是当我创建新用户时,它不会显示在admin(在配置文件表中)中,我需要从管理面板中添加用户,然后再添加它就可以了.我应该怎么做才能显示所有用户的个人资料信息?

p.s.当我创建表概要文件并尝试从连接的表格中选择信息时,SQL查询未返回任何内容,但是在将现有用户添加到概要文件表sql查询后,返回了我想要的所有内容

解决方案

要在创建新用户时创建新的 Profile 对象,可以使用 pre_save接收器:

来自django.db.models.signals的

 导入post_save从django.dispatch导入接收器@receiver(post_save,sender = User)def create_user_profile(发送者,实例,已创建,** kwargs):如果创建:Profile.objects.create(用户=实例) 

created 参数用于检查对象是否已创建( created = True )或已更新( created = False )

I use the built-in User model in django, but i want use some custom fields, i was create new model

class Profile(models.Model):
    user = models.OneToOneField(User)
    profile_img = models.ImageField(null=True)

    def __str__(self):
        return self.user.username

this is my custom model. But when i create new user it doesn't display in admin(in profile table), i need to add user from admin panel, after adding it works fine. what i should to do to display Profile info of all users?

p.s. When i was create table profile and was try to select info from joined tabels, sql query wasn't return anything, but after adding existed user to Profile table sql query return all what i want

解决方案

To create a new Profile object when a new user is created, you can use a pre_save receiver:

from django.db.models.signals import post_save
from django.dispatch import receiver

@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
    if created:
        Profile.objects.create(
            user=instance
        )

The created parameter is to check if the object has been created ( created=True ) or updated ( created=False )

这篇关于如何在Django中链接两个表?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆