Уникальные BooleanField оценивают в Django?

Я предполагаю, что эта команда помогла бы:

cvs diff -N -c -r RELEASE_1_0 -r RELEASE_1_1 > diffs

, где RELEASE_1_0 и RELEASE_1_1 названия Ваших тегов.

можно найти, что немного больше информации о cvs различной команде здесь

плюс он должно быть довольно просто создать сценарий для создания отчета более suitbable для потребностей, исключая: количество файлов, измененных, созданных удаленный и т.д., Насколько я знаю наиболее распространенные cvs инструменты GUI (wincvs и черепаха), не обеспечивает что-то вроде этого из поля.

Hope это помогает ;)

76
задан sampablokuper 21 September 2009 в 15:30
поделиться

2 ответа

Всякий раз, когда мне нужно было выполнить эту задачу, я переопределял метод сохранения для модели и проверял, установлен ли уже у какой-либо другой модели флаг (и повернул его выкл).

class Character(models.Model):
    name = models.CharField(max_length=255)
    is_the_chosen_one = models.BooleanField()

    def save(self, *args, **kwargs):
        if self.is_the_chosen_one:
            try:
                temp = Character.objects.get(is_the_chosen_one=True)
                if self != temp:
                    temp.is_the_chosen_one = False
                    temp.save()
            except Character.DoesNotExist:
                pass
        super(Character, self).save(*args, **kwargs)
55
ответ дан 24 November 2019 в 11:18
поделиться
class Character(models.Model):
    name = models.CharField(max_length=255)
    is_the_chosen_one = models.BooleanField()

    def save(self, *args, **kwargs):
        if self.is_the_chosen_one:
            qs = Character.objects.filter(is_the_chosen_one=True)
            if self.pk:
                qs = qs.exclude(pk=self.pk)
            if qs.count() != 0:
                # choose ONE of the next two lines
                self.is_the_chosen_one = False # keep the existing "chosen one"
                #qs.update(is_the_chosen_one=False) # make this obj "the chosen one"
        super(Character, self).save(*args, **kwargs)

class CharacterForm(forms.ModelForm):
    class Meta:
        model = Character

    # if you want to use the new obj as the chosen one and remove others, then
    # be sure to use the second line in the model save() above and DO NOT USE
    # the following clean method
    def clean_is_the_chosen_one(self):
        chosen = self.cleaned_data.get('is_the_chosen_one')
        if chosen:
            qs = Character.objects.filter(is_the_chosen_one=True)
            if self.instance.pk:
                qs = qs.exclude(pk=self.instance.pk)
            if qs.count() != 0:
                raise forms.ValidationError("A Chosen One already exists! You will pay for your insolence!")
        return chosen

Вы также можете использовать указанную выше форму для администратора, просто используйте

class CharacterAdmin(admin.ModelAdmin):
    form = CharacterForm
admin.site.register(Character, CharacterAdmin)
6
ответ дан 24 November 2019 в 11:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: