Почему Django не может найти идентификатор - PullRequest
0 голосов
/ 11 марта 2020

У меня есть две проблемы, которые я не могу решить.

Моя первая проблема - я не могу создать новую строку в моей psql базе данных

У меня есть этот код ошибки "Невозможно assign "'536'": "Substitute.substitut" должен быть экземпляром "Food". "

В этой строке: create_substitute_saved = Substitute.objects.create (user = request.user, substitut = substitute_food)

def saved_substitute(request):
    substitute_food = request.GET.get('saved_substitute')
    create_substitute_saved = Substitute.objects.create(user=request.user, substitut=substitute_food)
    create_substitute_saved.save()
    return render(request, 'off/substitute_saved.html') 
from django.contrib.auth.models import User

class Food(models.Model):
    food = models.TextField(max_length=50)
    category = models.TextField(max_length=300)
    ingredients = models.TextField(max_length=500)
    nutriscore = models.TextField(max_length=50, blank=True, null=True)
    store = models.TextField(max_length=100, null=True)
    link = models.TextField(max_length=100, null=True)
    image_product = models.TextField(max_length=100, null=True)
    image_ingredients = models.TextField(max_length=100, null=True)

    class Meta:
        verbose_name = "Aliments"
        verbose_name_plural = "Aliments"

    def __str__(self):
        return '%s'%(self.food)

class Substitute(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    food = models.ForeignKey(Food, on_delete=models.CASCADE, related_name='foods')
    substitut = models.ForeignKey(Food, on_delete=models.CASCADE, related_name='substitut')

    class Meta:
        verbose_name = "Substitut utilisateur"
        verbose_name_plural = "Substitut utilisateur"

    def __str__(self):
        return '%s'%(self.user.username) 

Моя вторая проблема в том, что я не могу получить значение переменной "details" из этой части кода

def food_details(request):
details= request.GET.get('details')
foods_details = Food.objects.filter(food__icontains=details)[:1]
return render(request, 'off/food_details.html', {
    'foods' : foods_details,
    })

Для использования в этой части

def saved_substitute(request):
substitute_food = request.GET.get('saved_substitute')
create_substitute_saved = Substitute.objects.create(user=request.user, food=details, substitut=substitute_food)
create_substitute_saved.save()
return render(request, 'off/substitute_saved.html')
...