Как я могу связать файлы с моделью статьи, которые загружаются с помощью django-drf-filepond?
Info: Я использую Django-drf-filepond в моем django проекте для загрузки файлов! django-drf-filepond имеет две модели TemporaryUpload(1) и StoredUpload(2). По умолчанию django-drf-filepond загружает файлы в TemporaryUpload перед отправкой формы. когда пользователь отправляет форму django-drf-filepond получает данные из TemporaryUpload и добавляет их в модель StoredUpload и удаляет их из модели TemporaryUpload, данные которой добавляются в StoredUpload.
Что я хочу сделать: Когда пользователь нажимает кнопку отправки, статья создается, и приложенные файлы также связываются со статьей.
Что у меня есть на данный момент:
i have
ArticleModel
/ArticleForm
.The article form data is submited and the files are appended into
StoreUpload
but the files are not linked it with an article. i want to linked it with article. when the user hit submit button.The data is submited by ajax.
models.py
class StoredUpload(models.Model):
post = models.ForeignKey(Article, on_delete=models.CASCADE, null=True) # This is the article model ForeignKey
# The unique upload ID assigned to this file when it was originally
upload_id = models.CharField(
primary_key=True, max_length=22, validators=[MinLengthValidator(22)]
)
file = models.FileField(storage=DrfFilePondStoredStorage(), max_length=2048)
uploaded = models.DateTimeField()
stored = models.DateTimeField(auto_now_add=True)
uploaded_by = models.ForeignKey(
settings.AUTH_USER_MODEL, null=True, blank=True, on_delete=models.CASCADE
)
def get_absolute_file_path(self):
fsp = local_settings.FILE_STORE_PATH
if not fsp:
fsp = ""
return os.path.join(fsp, self.file.name)
views.py
я не понимаю, как я могу добавить экземпляр post в экземпляр store_upload
?
class SubmitFormView(View):
form_class = ArticleForm
# Handle POST request
def post(self, request):
form = self.form_class(request.POST)
if form.is_valid():
post = form.save() # here is is the instance of an article which i want to append it into StoredUpload as a ForeignKey
# StoredUpload(post=post) # did't get anything here!
# Get the post request and extract the IDs of the temporary upload(s)
# to be permanently stored.
data = request.POST
print(data)
filepond_ids = data.getlist("filepond")
stored_uploads = []
for upload_id in filepond_ids:
tu = TemporaryUpload.objects.get(upload_id=upload_id)
store_upload(upload_id, os.path.join(upload_id, tu.upload_name))
stored_uploads.append(upload_id)
# Return the list of uploads that were stored.
return HttpResponse(
json.dumps({"status": "OK", "uploads": stored_uploads}),
content_type="application/json",
)