Невозможно назначить «u’1′»: «PropiedadesCond.Condominio» должен быть экземпляром «Condominios»

#python #django #django-views

#python #django #django-просмотры

Вопрос:

Я пытаюсь присвоить сгенерированный сеансом идентификатор компании новому продукту, принадлежащему этой компании, но я продолжаю получать эту ошибку, и я не уверен, к чему она относится.

Любая помощь будет высоко оценена

Models.py

 class Condominios(models.Model):
    idCondominio = models.AutoField(primary_key=True, null=False, max_length=15)
    idUser = models.OneToOneField(User)
    Nombre = models.CharField(max_length=200)
    Direccion = models.CharField(max_length=100)
    Colonia = models.CharField(max_length=100)
    CP = models.CharField(max_length=100)
    Municipio = models.CharField(max_length=100)
    Estado = models.CharField(max_length=100)
    Pais = models.CharField(max_length=100)
    Tamanom2 = models.CharField(max_length=20)
    Frentem2 = models.CharField(max_length=20)
    Fondom2 = models.CharField(max_length=20)
    def __unicode__(self):
        return unicode(self.Nombre)
 

views.py

 @login_required(login_url="/inicioc/")
def nuevapropiedad(request):
    if request.method == "POST":
        form = NuevaPropiedad(request.POST)
        if form.is_valid():
            propiedad = PropiedadesCond(idUser=request.user, Condominio=request.session["idCondominio"], Numero=request.POST.get("Numero", ""), Nombre=request.POST.get("Nombre", ""), Tamanom2=request.POST.get("Tamanom2", ""), Ocupante=request.POST.get("Ocupante", ""), Propietario=request.POST.get("Propietario", ""), Telefono=request.POST.get("Telefono", ""), Celular=request.POST.get("Celular", ""), Correo=request.POST.get("Correo", ""))
            form.save()
            return render(request, "immovelc/propiedades.html")
        else:
            return render(request, "immovelc/nuevapropiedad.html",
                          {"form": form})
    return  render(request, "immovelc/nuevapropiedad.html")
 

forms.py

 class NuevaPropiedad(ModelForm):
    class Meta:
        model = PropiedadesCond
        fields = ["Numero", "Nombre", "Tamanom2", "Ocupante", "Propietario", "Telefono", "Celular", "Correo"]
 

Спасибо!

Комментарии:

1. Поскольку вы используете MOdelFOrm , propiedad = PropiedadesCond(idUser=request.user, ... не требуется.. Вы можете просто сделать propiedad = form.save(commit=False) , а затем propiedad.save()

2. Я попробовал это, но это выдает следующую ошибку: ошибка целостности в /nuevapropiedad/ ImmovelCondominios_propiedadescond. Condominio_id может быть не нулевым

3. Хорошо .. Сделайте propiedad.Condominio = request.session. шаг перед form.save()

4. Я сделал это так: propiedad = form.save(commit= False) propiedad . Condominio = request.session[«idCondominio»] propiedad.save() Однако я получаю исходную ошибку

Ответ №1:

 propiedad = 
    PropiedadesCond(
    idUser=request.user, 
    Condominio=request.session["idCondominio"],    # <------- problem
    Numero=request.POST.get("Numero", ""), Nombre=request.POST.get("Nombre", ""),
    Tamanom2=request.POST.get("Tamanom2", ""),
    Ocupante=request.POST.get("Ocupante", ""), 
    Propietario=request.POST.get("Propietario", ""), 
    Telefono=request.POST.get("Telefono", ""), 
    Celular=request.POST.get("Celular", ""), 
    Correo=request.POST.get("Correo", ""))
 

Не видя вашей модели Propiedades, я бы рискнул предположить, что вам нужно сначала
получить или создать экземпляр объекта Condominio, прежде чем создавать объект Propiedades.
Конструктор попытается присвоить строку unicode u’1′, которую вы получаете из сеанса, объекту Condominio, что вызывает описанную вами ошибку.