DRF: где разместить логическую обработку при сохранении объекта - PullRequest
0 голосов
/ 23 октября 2018

Я работаю над небольшим приложением, в которое пользователи будут загружать лист 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...