class Page(BasePage): descendants = Relationship( "self", Q(slug__startswith=L("slug"), slug__ne=L("slug")), related_name="ascendants", ) subtree = Relationship( "self", Q(slug__startswith=L("slug")), related_name="rootpath" ) def __str__(self): return self.name
class ProductFilter(models.Model): fcolour = models.CharField(max_length=20) fsize = models.IntegerField() products = Relationship(Product, Q(colour=L("fcolour"), size__gte=L("fsize")), related_name="filters") cartitems = Relationship( CartItem, Q(product__colour=L("fcolour"), product__size__gte=L("fsize")), related_name="filters", ) def __str__(self): return "ProductFilter #%d: %s size %s" % (self.pk, self.fcolour, self.fsize)
class Category(models.Model): code = models.TextField(unique=True) members = Relationship( Categorised, Q(category_codes__contains=L("code")), related_name="categories" ) def __str__(self): return "Category #%d: %s" % (self.pk, self.code)
class CartItem(models.Model): product_code = models.CharField(max_length=13) description = models.TextField() product = Relationship( Product, Q(sku=L("product_code")), related_name="cart_items", multiple=False ) def __str__(self): return "Cart item #%s: SKU %s" % (self.pk, self.sku)
class LinkedNode(models.Model): name = models.CharField(max_length=30) prev_id = models.IntegerField(null=True) next = Relationship( "self", predicate=Q(prev_id=L("id")), reverse_multiple=False, multiple=False, related_name="prev", )
class UserGenerator(models.Model): user = Relationship( User, Q(username=Concat(Value("generated_for_"), L("id"))), multiple=False, reverse_multiple=False, ) def save(self, *args, **kwargs): super(UserGenerator, self).save(*args, **kwargs) User.objects.create(username="******" % self.id)
class CategoryBase(models.Model): code = models.CharField(unique=True, max_length=255) members = Relationship( Categorised, Q(category_codes__contains=L("code")), related_name="categories", ) class Meta: abstract = True def __str__(self): return "Category #%d: %s" % (self.pk, self.code)
class SavedFilter(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE) search_regex = models.TextField() chemicals = Relationship(Chemical, Q(formula__regex=L("search_regex")))