如何解决值错误 - 无法在 Django 中分配...
How to solve value error -cannot assign... in Django
我在我的模型中添加了一个新行,将最近的项目分配到我可以打开一些图表的页面,但是如果我点击保存按钮,我会收到这条错误消息,我无法弄清楚为什么:
ValueError at /mpa/project_details/1/
Cannot assign "'1'": "ProjectDetailsAdmin.projekt" must be a "Projekt" instance.
views.py
@user_passes_test(lambda u: u.is_superuser)
def project_details(request, projekt_id):
projekt = Projekt.objects.raw('SELECT projekt_id, id FROM stressz_profile WHERE stressz_profile.projekt_id=%s', [projekt_id])
projects_details = Profile.objects.filter(projekt_id=projekt_id)
allprojects = Projekt.objects.all()
... lots of queries here
context = {
...
'projekt': projekt,
'projects_details': projects_details,
'allprojects': allprojects,
...
}
if request.method == 'POST':
projekt = request.POST.get('projekt')
projekt_name = request.POST.get('projekt_name')
r01 = request.POST.get('r01')
szervkult_adm = ProjectDetailsAdmin(projekt=projekt, projekt_name=projekt_name r01=r01)
szervkult_adm.save()
return render(request, 'stressz/project_details.html', context)
models.py
class ProjectDetailsAdmin(models.Model):
def __str__(self):
return str(self.projekt_name)
projekt = models.ForeignKey('Projekt', on_delete=models.CASCADE, default=False, null=True )
projekt_name = models.TextField(max_length=200, null=True )
r01 = models.IntegerField(null=True, blank=True, default=0)
class Projekt(models.Model):
def __str__(self):
return str(self.projekt)
projekt = models.TextField(max_length=150)
html
<div class="container bg-warning my-3">Válaszd ki projektet:
<select class="form-select" id="projekt" name="projekt" aria-label="">
{% for i in allprojects %}
<option>{{ i.id }}</option>
{% endfor %}
</select>
</div>
非常感谢您!
projekt
是一个包含数字的字符串,而不是 Projekt
模型对象,这是必需的。
但是您可以分配给 projekt_id
字段:
if request.method == 'POST':
projekt = request.POST.get('projekt')
projekt_name = request.POST.get('projekt_name')
r01 = request.POST.get('r01')
szervkult_adm = ProjectDetailsAdmin.objects.create(
<strong>projekt_id=projekt</strong>,
projekt_name=projekt_name,
r01=r01
)
如果你创建一个名为 foo
的 ForeignKey
,那么你可以通过 foo
与该字段“交谈” ],或 <i>foo</i>_id
其中 <i>foo</i>_id
取 ForeignKey
.
引用的列的值
if request.method == 'POST':
projekt = request.POST.get('projekt')
projekt_name = request.POST.get('projekt_name')
r01 = request.POST.get('r01')
szervkult_adm = ProjectDetailsAdmin(projekt_id=projekt,
projekt_name=projekt_name r01=r01)
szervkult_adm.save()
每当您在 table 中更新或创建任何包含外键的内容时,您都需要传递主键对象,或者您可以直接分配主键,如 projekt_id=projekt .
我在我的模型中添加了一个新行,将最近的项目分配到我可以打开一些图表的页面,但是如果我点击保存按钮,我会收到这条错误消息,我无法弄清楚为什么:
ValueError at /mpa/project_details/1/
Cannot assign "'1'": "ProjectDetailsAdmin.projekt" must be a "Projekt" instance.
views.py
@user_passes_test(lambda u: u.is_superuser)
def project_details(request, projekt_id):
projekt = Projekt.objects.raw('SELECT projekt_id, id FROM stressz_profile WHERE stressz_profile.projekt_id=%s', [projekt_id])
projects_details = Profile.objects.filter(projekt_id=projekt_id)
allprojects = Projekt.objects.all()
... lots of queries here
context = {
...
'projekt': projekt,
'projects_details': projects_details,
'allprojects': allprojects,
...
}
if request.method == 'POST':
projekt = request.POST.get('projekt')
projekt_name = request.POST.get('projekt_name')
r01 = request.POST.get('r01')
szervkult_adm = ProjectDetailsAdmin(projekt=projekt, projekt_name=projekt_name r01=r01)
szervkult_adm.save()
return render(request, 'stressz/project_details.html', context)
models.py
class ProjectDetailsAdmin(models.Model):
def __str__(self):
return str(self.projekt_name)
projekt = models.ForeignKey('Projekt', on_delete=models.CASCADE, default=False, null=True )
projekt_name = models.TextField(max_length=200, null=True )
r01 = models.IntegerField(null=True, blank=True, default=0)
class Projekt(models.Model):
def __str__(self):
return str(self.projekt)
projekt = models.TextField(max_length=150)
html
<div class="container bg-warning my-3">Válaszd ki projektet:
<select class="form-select" id="projekt" name="projekt" aria-label="">
{% for i in allprojects %}
<option>{{ i.id }}</option>
{% endfor %}
</select>
</div>
非常感谢您!
projekt
是一个包含数字的字符串,而不是 Projekt
模型对象,这是必需的。
但是您可以分配给 projekt_id
字段:
if request.method == 'POST':
projekt = request.POST.get('projekt')
projekt_name = request.POST.get('projekt_name')
r01 = request.POST.get('r01')
szervkult_adm = ProjectDetailsAdmin.objects.create(
<strong>projekt_id=projekt</strong>,
projekt_name=projekt_name,
r01=r01
)
如果你创建一个名为 foo
的 ForeignKey
,那么你可以通过 foo
与该字段“交谈” ],或 <i>foo</i>_id
其中 <i>foo</i>_id
取 ForeignKey
.
if request.method == 'POST':
projekt = request.POST.get('projekt')
projekt_name = request.POST.get('projekt_name')
r01 = request.POST.get('r01')
szervkult_adm = ProjectDetailsAdmin(projekt_id=projekt,
projekt_name=projekt_name r01=r01)
szervkult_adm.save()
每当您在 table 中更新或创建任何包含外键的内容时,您都需要传递主键对象,或者您可以直接分配主键,如 projekt_id=projekt .