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()
Item.objects.filter(pk=1).delete_real()
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')
What is the correct field definition?
i.
birthday = models.DateField(null=True, blank=True)
birthday = models.DateField(null=False, blank=True)
birthday = models.DateField(null=True, blank=False)
birthday = models.DateField(null=False, blank=False)