Джанго я хочу, чтобы перерывы, когда существуют данные - PullRequest
1 голос
/ 02 апреля 2019

Когда я добавляю новые годы урожая с YearSet, но когда год существует, он не нарушается, если утверждение. Я пытаюсь использовать exists(), но это не удалось.

models.py

class YearSet(models.Model):
    year = models.CharField(max_length=4, default='')
    class Meta:
        ordering = ["-year"]
class Harvest(models.Model):
    User_id = models.ForeignKey(User, on_delete=models.CASCADE,default='')
    product = models.IntegerField(default='')
    years = models.ForeignKey(YearSet, on_delete=models.CASCADE, default='2017')
    Plant_id = models.ForeignKey(Plant, on_delete=models.CASCADE)

view.py

def CreateHarvest(request, Plant_id, Harvest_id, id):
        if request.method == 'POST':
            harvestform = addHarvest(request.POST)
            if harvestform.is_valid():
                createharvest = harvestform.save(commit=False)
                createharvest.user = request.user
                if Harvest.objects.exists():
                    createharvest.save()
                    return redirect("../../")
                else:
                    return render(request, "Farmer/test.html")
        else:
            harvestform = addHarvest()

        harvestcreateform = {
            'harvestform': harvestform,
        }
        return render(request, 'Farmer/CreateHarvest.html', harvestcreateform)

forms.py

class addHarvest(forms.ModelForm):
    class Meta:
        model = Harvest
        fields = [
            'product',
            'years'
        ]

Если Harvest имеет "2012", то exists() не получает объект "2012"

1 Ответ

0 голосов
/ 02 апреля 2019

Я думаю, что вы НЕ хотите создавать Harvest, когда существует запись с годом, и в этом случае вам нужно проверить, существует ли экземпляр Harvest с указанным годом.

if Harvest.objects.filter(years=int(request.POST['years']).exists() вернет True, если есть запись об урожае с теми же годами, что и в форме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...