django-select2/tests/testapp/models.py
Johannes Hoppe f31beec0c4
Add support for custom to_field names for foreign keys (#486)
Django's ForeignKey supports custom to_fields. The to field is the
primary key by default, but can be modified. The to field is also
used by forms to reduce database lookups.

This patch add support for custom to_field names on both model or
form layer.
2018-06-30 14:56:32 +02:00

62 lines
1.5 KiB
Python

from django.db import models
class Genre(models.Model):
title = models.CharField(max_length=50)
class Meta:
ordering = ('title',)
def __str__(self):
return self.title
class Artist(models.Model):
title = models.CharField(max_length=50, unique=True)
genres = models.ManyToManyField(Genre)
class Meta:
ordering = ('title',)
def __str__(self):
return self.title
class Album(models.Model):
title = models.CharField(max_length=255)
artist = models.ForeignKey(Artist, on_delete=models.CASCADE)
featured_artists = models.ManyToManyField(Artist, blank=True, related_name='featured_album_set')
primary_genre = models.ForeignKey(Genre, on_delete=models.CASCADE, blank=True, null=True,
related_name='primary_album_set')
genres = models.ManyToManyField(Genre)
class Meta:
ordering = ('title',)
def __str__(self):
return self.title
class Country(models.Model):
name = models.CharField(max_length=255)
class Meta:
ordering = ('name',)
def __str__(self):
return self.name
class City(models.Model):
name = models.CharField(max_length=255)
country = models.ForeignKey('Country', related_name="cities", on_delete=models.CASCADE)
class Meta:
ordering = ('name',)
def __str__(self):
return self.name
class Groupie(models.Model):
obsession = models.ForeignKey(Artist, to_field='title', on_delete=models.CASCADE)