Уведомления

Группа в Telegram: @pythonsu

#1 Май 16, 2016 11:50:49

megoloman
Зарегистрирован: 2015-10-26
Сообщения: 113
Репутация: +  0  -
Профиль   Отправить e-mail  

Django ORM

Здравтсвуйте! Помогите пожалуйста с тестовым заданием, необходимо выбрать правильные ответы.

1. Suppose we have model with a custom manager:

class CustomManager(models.Manager):
    def get_queryset(self):
        return CustomQuerySet(self.model, using=self._db)
class Item(models.Model):
    name = models.CharField('Item', max_length=100)
    active = models.BooleanField('Active', default=True)
    objects = CustomManager()

Now we want the following code to work:
Item.objects.filter(pk=1).delete()
- should set “active” attribute to False on matched records.


Item.objects.filter(pk=1).delete_real()
- should delete matched records from db.

What is the correct CustomQuerySet implementation?


i.
class CustomQuerySet(QuerySet):
    def delete(self):
        self.update(active=False)
    def delete_real(self):
        super(CustomQuerySet, self).delete_real()


ii.
class CustomQuerySet(QuerySet):
    def delete(self):
        self.update(active=False)
    def delete_real(self):
        super(CustomQuerySet, self).delete()

iii.
class CustomQuerySet(QuerySet):
    def delete(self):
        self.active = False
    def delete_real(self):
        super(CustomQuerySet, self).delete()

iv.
class CustomQuerySet(QuerySet):
    def delete(self):
        self.active = False
    def delete_real(self):
        super(CustomQuerySet, self).delete_real()



2. Suppose we have model:

class Person(models.Model):
    name = models.CharField('Item', max_length=100)
    birthday = models.DateField(...)

We want to define a model field “birthday” such that django admin interface doesn't allow this field to be empty, but we can create persons with empty birthday using orm (
Person.objects.create(name='Name 1')
should work).

What is the correct field definition?
i.
birthday = models.DateField(null=True, blank=True)
ii.
birthday = models.DateField(null=False, blank=True)
iii.
birthday = models.DateField(null=True, blank=False)
iv.
birthday = models.DateField(null=False, blank=False)

Отредактировано megoloman (Май 16, 2016 11:51:42)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version