На основе подробного разговора, чтобы очистить несколько деталей. Вот ответ.
Вам нужно внести небольшие изменения в свои модели, так как было довольно сложно понять, чего вы хотите достичь.
Модели:
class ManufacturerName(models.Model):
name_id = models.AutoField(primary_key=True)
company_name = models.CharField(unique=True, max_length=50)
class Meta:
managed = False
db_table = 'manufacturer_name'
class CarBuild(models.Model):
car_id = models.AutoField(primary_key=True)
car_icon = models.CharField(max_length=150, blank=True, null=True)
manufacturer = models.ForeignKey(ManufacturerName,on_delete=models.SET_NULL)
class Meta:
managed = False
db_table = 'car_build'
class CarList(models.Model):
list_id = models.AutoField(primary_key=True)
car = models.ForeignKey(CarBuild, on_delete=models.DO_NOTHING)
title = models.CharField(unique=True, max_length=100)
description = models.TextField()
class Meta:
managed = False
db_table = 'cars'
И тогда вам нужно настроить сериализаторы.
class CarListSerialiser(serializers.HyperlinkedModelSerializer):
company_name= serializers.SerializerMethodField(read_only=True)
class Meta:
model = CarList
fields = ('list_id', 'company_name', 'title')
def get_company_name(self, obj):
return obj.car.manufacturer.company_name
И вы используете его в своем представлении:
class CarListViewSet(viewsets.ModelViewSet):
queryset = CarList.object.all()
serializer_class = CarListSerialiser
РЕДАКТИРОВАНИЕ: Grrr... отредактировал regex из-за нового "разъяснения":)
^[A-C][a-zA-Z0-9]{4}$
РЕДАКТИРОВАНИЕ: объяснить вышеупомянутый Regex на английском языке...
^
и $
средний "От начала до конца" (это гарантирует, чтобы целая строка отлично соответствовала)
[A-C]
означает, что "Соответствие или A
, B
, или C
"
[a-zA-Z0-9]{4}
означает "Соответствие 4 строчных буквы, прописные буквы или числа"
Что-то вроде:
[A-C][A-Za-z0-9]{4}
я советовал бы смотреть на http://regexlib.com/CheatSheet.aspx , если Вы незнакомы с регулярными выражениями и пытаетесь сделать подобные простые regexs сами.
существует также много regex онлайн тестирование приложений, таких как: http://regexlib.com/RETester.aspx , которые позволяют Вам протестировать свой regexes, не пишущий кода.
Вы подразумеваете, что первая буква должна быть A, B или C? Или это может быть какая-либо буква?
, Если бы это должен быть A, B, или (чувствительный к регистру) C, тогда это было бы регулярным выражением.
[A-C][a-zA-Z0-9]{4}
Иначе, другие ответы здесь достаточны.
В случае, если это не Perl regexps, мы говорим о, некоторое вырезание и вклейка необходимо:
[ABC][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9]
я вырезал и вставил" [a-zA-Z0-9]" четыре раза.
Этот ответ правильный, но я хотел добавить, что вы можете немного сократить его следующим образом.
^[A-C]\w{4}$
\ w означает любой буквенно-цифровой символ.