Django:无法分配字符串:类必须是类实例

2024-10-04 11:33:35 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的第一个Django页面。我知道有很多这样的问题,但我还没有找到正确的答案

我有一个可以完美展示的数据库,我想允许用户添加新条目

models.py

class Server(models.Model):
    client = models.ForeignKey(settings.AUTH_USER_MODEL, null=False, blank=False, on_delete=models.CASCADE)
    name = models.CharField(primary_key=True, max_length=20)
    ip = models.CharField(max_length=13)


class Usuario(models.Model):
    id = models.AutoField(primary_key=True)
    servidor = models.ForeignKey(Server, null=False, blank=False, on_delete=models.CASCADE)
    correo = models.EmailField()
    fpago = models.DateField('Fecha de pago', auto_now_add=True)

和视图.py

@login_required(login_url='login/')
def suscripciones(request):

    obj_usuarios = Usuario.objects.all()

    if request.method == 'POST':

        servidor = request.POST.get('servidor')
        correo = request.POST.get('correo')

        consulta = Usuario(servidor=servidor, correo=correo)

        consulta.save()

    return render(request, 'APP/suscripciones.html',
                  {'obj_usuarios': obj_usuarios})

模型在没有request.method和consulta的情况下工作,但使用此代码,我得到以下错误:

无法分配“(带有服务器名称的字符串)”:“Usuario.servidor”必须是“服务器”实例

非常感谢


Tags: pyfalsetrueobjservermodelsrequestlogin
1条回答
网友
1楼 · 发布于 2024-10-04 11:33:35

当您解析请求servidor = request.POST.get('servidor')时,您将收到一个 字符串“servidor”。要将其发送到Usuario,请尝试检索Server实例,如下所示:

# ...
servidor = request.POST.get('servidor')
servidor = Server.objects.filter(name=servidor).first()
correo = request.POST.get('correo')

consulta = Usuario(servidor=servidor, correo=correo)

相关问题 更多 >