我怎样才能得到模型的数据?
How can I get the data of the modelform?
我正在构建一个用户模型,并想将其附加到如下所示的模型表单。如何通过 shell 访问 mysql 数据库来获取每个用户的电子邮件?
我试过这些通过shell获取数据,但前一个说对象没有电子邮件属性,后一个说forms.py没有对象。
from Project.User.models import UserProfile as p
p.objects.filter(is_active=True).first().email //
from Project.User.forms import ClientProfileForm as p
p.objects.filter(is_active=True).first().email
代码:
models.py:
class UserProfile(BaseModel):
user = models.OneToOneField(User, primary_key=True, on_delete=models.CASCADE, verbose_name='client')
name = models.CharField('name',max_length=30, null=False, help_text="Name")
gender = models.CharField('sex',max_length=1, help_text="Sex")
class Meta:
verbose_name = 'Client'
verbose_name_plural = 'Client'
def __str__(self):
return 'client:%s' % self.user
forms.py:
class ClientProfileForm(forms.ModelForm):
email = forms.EmailField()
class Meta:
model = UserProfile
fields = ("user", "name", "gender")
您尝试过使用
p.objects.filter(is_active=True).first().user.email
from Project.User.forms import UserProfile as p
此行不正确,因为您的表单名称是 ClientProfileForm
而不是 UserProfile
。这就是您收到错误 forms.py has no object
的原因
在您向其发送数据之前,表单中没有数据,因此您无法获取用户,并且它是来自您 shell 的电子邮件。
例如,表单用于从 HTML 模板获取数据并验证该数据,然后将这些数据添加到数据库中。
如果您填写表格,您可以像这样访问已从您的视图中清除的数据:
form = ClientProfileForm(request.POST)
if form.is_valid():
print(form.cleaned_data['my_form_field_name'])
您还可以为表单设置一些默认值。此处示例:
Django forms initial example on Whosebug
最后是你的问题:
您正在尝试访问来自 UserProfile
的电子邮件,它没有电子邮件字段,但 User
模型有。
这样您就可以像这样访问电子邮件:
from Project.User.models import UserProfile as p
# Get the first profile and then get the email from user model
p.objects.filter(is_active=True).first().user.email
我正在构建一个用户模型,并想将其附加到如下所示的模型表单。如何通过 shell 访问 mysql 数据库来获取每个用户的电子邮件?
我试过这些通过shell获取数据,但前一个说对象没有电子邮件属性,后一个说forms.py没有对象。
from Project.User.models import UserProfile as p
p.objects.filter(is_active=True).first().email //
from Project.User.forms import ClientProfileForm as p
p.objects.filter(is_active=True).first().email
代码:
models.py:
class UserProfile(BaseModel):
user = models.OneToOneField(User, primary_key=True, on_delete=models.CASCADE, verbose_name='client')
name = models.CharField('name',max_length=30, null=False, help_text="Name")
gender = models.CharField('sex',max_length=1, help_text="Sex")
class Meta:
verbose_name = 'Client'
verbose_name_plural = 'Client'
def __str__(self):
return 'client:%s' % self.user
forms.py:
class ClientProfileForm(forms.ModelForm):
email = forms.EmailField()
class Meta:
model = UserProfile
fields = ("user", "name", "gender")
您尝试过使用
p.objects.filter(is_active=True).first().user.email
from Project.User.forms import UserProfile as p
此行不正确,因为您的表单名称是 ClientProfileForm
而不是 UserProfile
。这就是您收到错误 forms.py has no object
在您向其发送数据之前,表单中没有数据,因此您无法获取用户,并且它是来自您 shell 的电子邮件。
例如,表单用于从 HTML 模板获取数据并验证该数据,然后将这些数据添加到数据库中。
如果您填写表格,您可以像这样访问已从您的视图中清除的数据:
form = ClientProfileForm(request.POST)
if form.is_valid():
print(form.cleaned_data['my_form_field_name'])
您还可以为表单设置一些默认值。此处示例:
Django forms initial example on Whosebug
最后是你的问题:
您正在尝试访问来自 UserProfile
的电子邮件,它没有电子邮件字段,但 User
模型有。
这样您就可以像这样访问电子邮件:
from Project.User.models import UserProfile as p
# Get the first profile and then get the email from user model
p.objects.filter(is_active=True).first().user.email