Django: Как переопределить сообщение об ошибке unique_together на стороне администратора? - PullRequest
0 голосов
/ 23 сентября 2018

Мне нужна помощь, чтобы настроить эту ошибку.Уже видел на этом сайте, как я могу изменить ошибку для формы модели.Моя проблема в том, что я использую чисто админскую сторону django, и мне нужно изменить то, как выглядит ошибка.Я добавил их также в свой класс Meta из admin.py, и ничего не произошло!

enter image description here

Когда я помещаю этот код в мета-класс в моих моделях, я получаю это сообщение об ошибке TypeError: 'class Meta' got invalid attribute(s): error_messages, поэтому мой вопрос здесь.

Пожалуйста, найдите ниже мои модели:

from django.db import models
from django.conf import settings
from django.core.exceptions import ValidationError
from django.utils.translation import gettext_lazy as _
from datetime import datetime, timedelta, time
from django.core.exceptions import NON_FIELD_ERRORS

class Parcare(models.Model):
    PARKING_PLOT = (('P1', 'Parking #1'), ('P2', 'Parking #2'),('P3', 'Parking #3'))
    user = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True,null=True, default=1, on_delete=True)
    email=models.EmailField(blank=True, null=True)
    parking_on = models.DateField(auto_now=False, auto_now_add=False,blank=True, null=True,
                                  help_text='Alege data cand doresti sa vii in office',)
    parking_off = models.DateField(auto_now=False, auto_now_add=False, blank=True, null=True, 
                                help_text='Alege Data Plecarii')  
    numar_masina = models.CharField(max_length=8, default="IF77WXV",blank=True, null=True, 
                                help_text='Introdu Numarul Masinii')
    location = models.CharField(max_length=3, blank=True, default="P1",null=True, choices=PARKING_PLOT,
                                help_text='Alege Locul de Parcare Dorit')
    updated = models.DateTimeField(auto_now=True, auto_now_add=False,blank=True, null=True)
    timestamp=models.DateTimeField(auto_now=False, auto_now_add=True,blank=True, null=True)
    venire = models.TimeField(default=time(9, 00), auto_now=False,auto_now_add=False, help_text='Alege Ora Venirii')
    plecare = models.TimeField(default=time(18, 00), auto_now=False, auto_now_add=False, help_text='Alege Ora Plecarii')
    # booked = models.BooleanField(default=1)
    objects = ParcareManager()

    def __str__(self):
        return self.location + " | " + str(self.parking_on) + " | " + str(self.parking_off)
    class Meta:
        verbose_name_plural = "parcare"
        ordering = ["-parking_on"]
        unique_together = ("parking_on", "location")
         error_messages = {
             NON_FIELD_ERRORS: {
                 'unique_together': "%(model_name)s's %(field_labels)s are not unique. This means that the same parking plot is already booked during time period!",
             }
         }

Спасибо заранее!

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

Это может быть то, что вам нужно.Функция validate_unique проверяет все ограничения уникальности вашей модели.Поместите эту функцию в модель Parcare.

def validate_unique(self,exclude=None):
        try:
            super(Parcare,self).validate_unique()
        except ValidationError as e:
            raise ValidationError(self.user+"your message")

Примечание: вы можете использовать любое поле вместо self.user

0 голосов
/ 23 сентября 2018

Определите форму модели, которая отменяет сообщение об ошибке для unique_together:

class ParcareForm(forms.ModelForm):
    class Meta:
        error_messages = {
            NON_FIELD_ERRORS: {
                'unique_together': "%(model_name)s's %(field_labels)s are not unique. This means that the same parking plot is already booked during time period!",
            },
        }

Затем сообщите класс администратора вашей модели нам форму модели, установив form:

class ParcareAdmin(admin.ModelAdmin):
    form = ParcareForm

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