Я работаю над небольшим приложением, в которое пользователи будут загружать лист Excel (модель FileUpload) , и на листе будут искать строки, соответствующие определенному RegEx.Строки, соответствующие этому RegEx, являются первичным ключом другой модели (модель FileDevice) .
До сих пор мое исследование указывало на размещение этой логики в сериализаторе модели FileUpload, но я неконечно как.Комментарии в функции создания выглядят так, как будто я на правильном пути, или эта логика должна выполняться в другом месте?
Модель :
class FileUpload(models.Model):
uploadid = models.AutoField(primary_key=True)
user_uploaded = models.CharField(max_length=64, blank=True)
time_uploaded = models.DateTimeField(auto_now_add=True)
file = models.FileField(upload_to=rename_uploaded_file, blank=False, validators=[validators.excel_file_extensions])
devices = models.ManyToManyField(FileDevice, blank=True, related_name='files')
class FileDevice(models.Model):
device_name = models.CharField(primary_key=True, max_length=16)
Сериализатор :
class FileDeviceRelationshipSerializer(serializers.ModelSerializer):
files = FileUploadSerializer(many=True, read_only=True)
class Meta:
model = models.FileDevice
fields = '__all__'
def create(self, validated_data):
# 1. Search for strings in file
# 2. Add all string matches to a set
# 3. For every entry in set, link to that instance of a different model
# 4. Save object