'profile' 这个词是 Django 中的内置功能吗?
Is the word 'profile' an in build feature in Django?
我是 Django 的新手。下面的代码是在新用户注册我的博客应用程序时创建用户配置文件。
疑问:- 为什么我们在最后一行代码中使用配置文件而不是配置文件?
请注意大写单词 'Profile'
from django.db.models.signals import post_save
from django.contrib.auth.models import User
from django.dispatch import receiver
from .models import Profile
@receiver(post_save, sender=User)
def create_profile(sender, instance, created, *args,**kwargs):
if created:
Profile.objects.create(user=instance)
@receiver(post_save, sender=User)
def save_profile(sender, instance, *args,**kwargs):
instance.profile.save()''' #last code line
否,它不是内置功能。如果你从你的模型中定义一个关系(例如 Profile
到 User
),Django 会自动创建一个反向关系。您可以使用 related_name
属性指定该关系的名称。
因此,您可以通过更改关系的 related_name
[Django-doc] 来指定不同的名称,例如:
from django.db import models
from django.contrib.auth import get_user_model
class Profile(models.Model):
user = models.OneToOneField(
get_user_model(),
on_delete=models.CASCADE,
<b>related_name='other_attribute'</b>
)
在这种情况下,配置文件的名称是:
from django.contrib.auth import get_user_model
@receiver(post_save, sender=get_user_model())
def save_profile(sender, instance, *args,**kwargs):
instance.<b>other_attribute</b>.save()
默认情况下 related_name
值是 class 的名称,但在 小写 中,并带有下划线 (_
)单词分隔符。
这是根据 PEP-8,其中 class 的属性以小写字母书写,并使用下划线作为单词分隔符。
我认为在你的代码中
简介 是模特的名字:
Class Profile(models.Model)
和profile是related_name的反向关系如:
class Profile(models.Model):
user= models.OneToOneField(User,on_delete=models.CASCADE,related_name="profile")
当你想使用模型的所有对象时使用:
Profile.objects.all()
当您需要用户对象时:
userobject.profile.<other fields name>
我是 Django 的新手。下面的代码是在新用户注册我的博客应用程序时创建用户配置文件。
疑问:- 为什么我们在最后一行代码中使用配置文件而不是配置文件? 请注意大写单词 'Profile'
from django.db.models.signals import post_save
from django.contrib.auth.models import User
from django.dispatch import receiver
from .models import Profile
@receiver(post_save, sender=User)
def create_profile(sender, instance, created, *args,**kwargs):
if created:
Profile.objects.create(user=instance)
@receiver(post_save, sender=User)
def save_profile(sender, instance, *args,**kwargs):
instance.profile.save()''' #last code line
否,它不是内置功能。如果你从你的模型中定义一个关系(例如 Profile
到 User
),Django 会自动创建一个反向关系。您可以使用 related_name
属性指定该关系的名称。
因此,您可以通过更改关系的 related_name
[Django-doc] 来指定不同的名称,例如:
from django.db import models
from django.contrib.auth import get_user_model
class Profile(models.Model):
user = models.OneToOneField(
get_user_model(),
on_delete=models.CASCADE,
<b>related_name='other_attribute'</b>
)
在这种情况下,配置文件的名称是:
from django.contrib.auth import get_user_model
@receiver(post_save, sender=get_user_model())
def save_profile(sender, instance, *args,**kwargs):
instance.<b>other_attribute</b>.save()
默认情况下 related_name
值是 class 的名称,但在 小写 中,并带有下划线 (_
)单词分隔符。
这是根据 PEP-8,其中 class 的属性以小写字母书写,并使用下划线作为单词分隔符。
我认为在你的代码中 简介 是模特的名字:
Class Profile(models.Model)
和profile是related_name的反向关系如:
class Profile(models.Model):
user= models.OneToOneField(User,on_delete=models.CASCADE,related_name="profile")
当你想使用模型的所有对象时使用:
Profile.objects.all()
当您需要用户对象时:
userobject.profile.<other fields name>