python - 如何在 django 中保存模型时自动保存用户名而不是对象名(无)
问题描述
当我保存模型时,对象名称为无,但我需要在保存模型时自动保存用户名而不是对象名称(无)
模型.py
class solo_21_6_2021(models.Model):
user = models.OneToOneField(User,null=True,on_delete=models.CASCADE)
player1_pubg_id = models.PositiveIntegerField(null=True,blank=True)
player1_pubg_name = models.CharField(max_length=15,null=True,blank=True)
def __str__(self):
return str(self.user)
视图.py
def solo(request):
form = SoloForm()
if request.method=="POST":
form=SoloForm(request.POST)
if form.is_valid():
form.save()
return render(request, 'bgmiapp/solo.html',{'form':form})
表格.py
class SoloForm(forms.ModelForm):
class Meta():
model = solo_21_6_2021
fields=['player1_pubg_id','player1_pubg_name'
管理员.py
class SoloAdmin(admin.ModelAdmin):
list = ('user','player1_pubg_id','player1_pubg_name')
admin.site.register(Profile)
admin.site.register(solo_21_6_2021,SoloAdmin)
解决方案
您已将用户字段设置为 null,因此在没有它的情况下创建模型,因此当您想按用户显示对象时,它没有此信息,因此显示为无。
将模型修改为:
class solo_21_6_2021(models.Model):
user = models.OneToOneField(User,on_delete=models.CASCADE)
player1_pubg_id = models.PositiveIntegerField(null=True,blank=True)
player1_pubg_name = models.CharField(max_length=15,null=True,blank=True)
def __str__(self):
return str(self.user)
所以现在它是必需的和相关的,因为它应该是
和形式:
class SoloForm(forms.ModelForm):
class Meta():
model = solo_21_6_2021
fields=['user','player1_pubg_id','player1_pubg_name']
所以它以 html 形式显示用户的选择
现在,当您提交表单时,用户名将显示在管理页面中
*或者,您可以让经过身份验证的用户成为创建对象的用户,因此无需向所有人显示您的用户列表:
def solo(request):
form = SoloForm()
if request.method=="POST":
form=SoloForm(request.POST)
if form.is_valid():
f = form.save(commit=False)
f.user = request.user
f.save()
return render(request, 'bgmiapp/solo.html',{'form':form})
并摆脱表单中的用户:
class SoloForm(forms.ModelForm):
class Meta():
model = solo_21_6_2021
fields=['player1_pubg_id','player1_pubg_name']
ps:由于你有OnetoOne关系,所以用户只能创建一个对象,创建另一个会抛出user_id唯一约束错误
推荐阅读
- node.js - Nodejs DNS使用HTTP文件上传验证
- python - NetworkX 和 wxPython - 如何添加边权重?
- javascript - 通过循环javascript表输入到输出
- java - 相机在不需要的活动中启动
- python - CSV 问题 | 股价操纵
- mingw - windows下使用MinGW编译x264,错误码5
- sql - PostgreSQL:为所有行创建具有唯一时间戳的表
- javascript - 样式没有更新
- javascript - Javascript导入:“不允许裸模块”?
- r - 雅虎财经 - 使用 R 进行网页抓取 - SelectorGadget 不起作用